<?php
	include_once("config/config.php");
	include_once("termin.php");
	class Information{
	
		private $schulid;
		private $schulname='';
		private $email='';
		private $strasse='';
		private $plz='';
		private $stadt='';
		private $leiter='';
		private $ansprechpartner='';
		private $vorwahl='';
		private $homepage='';
		private $telnr='';
		private $termine = array();		
		private $exists=false;
		
		function holeTermine(){
			global $host;
			global $username;
			global $password;
			global $database;
			
			$this->termine = array();
			$sqlConn = @new mysqli($host,$username,$password,$database);
			if(mysqli_connect_errno()){
				throw new Exception("Ein Fehler bei der SQL-Verbindung ist aufgetreten, Versuchen sie es erneut");
			}
			else{
				$result = $sqlConn->query("SELECT * FROM termine WHERE schulid = ".$this->schulid);
				while($row = $result->fetch_assoc()){
					if($row['bisdatum']!=null || $row['bisdatum']!=""){
						$bisDatum = $row['bisdatum'];
					}
					else{
						$bisDatum = null;
					}
					$this->termine[]= @new Termin($row['veranstaltung'],$row['terminid'],$row['vondatum'],$bisDatum);
				}
			}
			$sqlConn->close();
		}
		
		function __construct($schulid){
			global $host;
			global $username;
			global $password;
			global $database;
			
			$this->schulid = $schulid;
			$sqlConn = @new mysqli($host,$username,$password,$database);
			if(mysqli_connect_errno()){
				echo "fehler";
				throw new Exception("Ein Fehler bei der SQL-Verbindung ist aufgetreten, Versuchen sie es erneut");
			}
			$result = $sqlConn->query("SELECT * FROM information WHERE schulid = ".$this->schulid);
				if($result->num_rows!=0){
				while($row = $result->fetch_assoc()){
					$this->schulname				= $row['schulname'];
					$this->email						= $row['email'];
					$this->strasse					= $row['adresse'];
					$this->plz							= $row['plz'];
					$this->stadt						= $row['stadt'];
					$this->leiter						= $row['schulleiter'];
					$this->ansprechpartner	= $row['ansprechpartner'];
					$this->vorwahl					= $row['vorwahl'];
					$this->telnr						= $row['telefonnr'];
					$this->homepage					= $row['homepage'];
				}
				$this->exists=true;
				
				$result->close();
			}
			else{
				$this->exists=false;
			}
			$sqlConn->close();
		}
		
		function getTermine(){
			$this->holeTermine();
			return $this->termine;
		}
		
		function countTermine(){
			return count($this->termine);
		}
		
		function nextTerminID(){
			$terminID=1;
			foreach($this->termine as $termin){
				if($termin->getTerminID()>$terminID){
					return $terminID;
				}
				else{
					$terminID++;
				}
			}
			return $terminID;
		}
		
		function getTermin($terminid){
			$this->holeTermine();
			foreach($this->termine as $termin);
				if($termin->getTerminID() == $terminid)
					return $termin;
			return -1;
		}
		
		function changeTermin($terminID,$beschr,$vonDatum,$bisDatum){
			global $host;
			global $username;
			global $password;
			global $database;

			$hasEnde = false;
			if($bisDatum != null){
				$hasEnde = true;
			}
			
			$sqlConn = @new mysqli($host,$username,$password,$database);
			if(mysqli_connect_errno()){
				throw new Exception("Ein Fehler bei der SQL-Verbindung ist aufgetreten, Versuchen sie es erneut");
			}
			else{
			if(hasEnde){
					$stmt = $sqlConn->prepare("UPDATE termine
																		 SET	veranstaltung=?,
 																					vondatum=?,
 																					bisdatum=?
																		WHERE schulid = ? AND terminid = ?");
					$stmt->bind_param('siiii',$beschr,
																		$vonDatum,
																	  $bisDatum,
																	 	$this->schulid,
																	 	$terminID
																	 );
				}
				else{
					$stmt = $sqlConn->prepare("UPDATE termine
																		 SET	veranstaltung=?,
 																					vondatum=?,
 																					bisdatum=NULL
																		WHERE schulid = ? AND terminid = ?");
					$stmt->bind_param('siii',$beschr,
																		$vonDatum,
																	 	$this->schulid,
																	 	$terminID
																	 );
				
			}
			$this->holeTermine();
		}
		if(!$stmt->execute()){
					throw new Exception($this->exists."<br><br>Da ging etwas mit der SQL-Verbindung schief!");
		}
		$stmt->close();
		$sqlConn->close();
		$this->holeTermine();
	}		
		
		function addTermin($termin){
			global $host;
			global $username;
			global $password;
			global $database;
		
			
			$sqlConn = @new mysqli($host,$username,$password,$database);
			if(mysqli_connect_errno()){
				throw new Exception("Ein Fehler bei der SQL-Verbindung ist aufgetreten, Versuchen sie es erneut");
			}
			else{
				$vonDatum=$termin->getvonDatum();
				$terminID = $termin->getTerminID();
				if($termin->hasEnde()){
					$bisDatum=$termin->getbisDatum();
					$stmt = $sqlConn->prepare("INSERT INTO termine(schulid,
																				terminid,
 																				veranstaltung,
 																				vondatum,
 																				bisdatum
 																				)
																		VALUES(?,?,?,?,?)");
					$stmt->bind_param('iisii',$this->schulid,
																	 $terminID,
																	 $termin->getBeschr(),
																	 $vonDatum,
																	 $bisDatum);
				}
				else{
					$stmt = $sqlConn->prepare("INSERT INTO termine(schulid,
																				terminid,
 																				veranstaltung,
 																				vondatum
 																				)
																		VALUES(?,?,?,?)");
					$stmt->bind_param('iisi',$this->schulid,
																	 $terminID,
																	 $termin->getBeschr(),
																	 $vonDatum);
				}
				}
				if(!$stmt->execute()){
					throw new Exception($this->exists."<br><br>Da ging etwas mit der SQL-Verbindung schief!");
				}
				$stmt->close();
				$sqlConn->close();
				$this->holeTermine();
		}
		
		function setSchulname($schulname){
			$schulname = trim($schulname);
			if($schulname==''){
				throw new Exception("<br>Kein gueltiger Schulname angegeben");
			}
			$this->schulname = $schulname;
		}
		function setAdresse($strasse,$plz,$ort){
			$strasse = trim($strasse);
			$plz = trim($plz);
			$ort = trim($ort);
			//TODO: Bei PLZ ueberpruefen ob nur Ziffern
			if($strasse=='' || $plz=='' || $ort==''){
				throw new Exception("<br>Keine gueltige Adresse angegeben");
			}
			$this->strasse = $strasse;
			$this->plz = $plz;
			$this->stadt = $ort;
		}
		function setEmail($email){
			$email = trim($email);
			//TODO: Auf gueltige E-Mail pruefen!!! -> Exception schmeißen
			$this->email = $email;
		}
		function setSchulleiter($leiter){
			$leiter = trim($leiter);
			$this->leiter = $leiter;
		}
		function setAnsprechpartner($ansprechpartner){
			$ansprechpartner = trim($ansprechpartner);
			$this->ansprechpartner = $ansprechpartner;
		}
		function setTelefon($vorwahl,$telnr){
			$vorwahl = trim($vorwahl);
			$telnr = trim($telnr);
			if($vorwahl=='' && $telnr == ''){
				$this->vorwahl = '';
				$this->telnr = '';
			}
			else if($vorwahl=='' || $telnr == ''){
				throw new Exception("Bitte geben Sie sowohl Vorwahl als auch die Rufnummer ein!");
			}
			else{
				$this->vorwahl = $vorwahl;
				$this->telnr = $telnr;	
			}
		}
		function setHomepage($value){
			$value = trim($value);
			$this->homepage = $value;
		}
		
		function getInfos(){
			return array(	schulname=>$this->schulname,
								 	 	email=>$this->email,
								 		strasse=>$this->strasse,
										plz=>$this->plz,
								 		stadt=>$this->stadt,
								 		leiter=>$this->leiter,
								 		ansprechpartner=>$this->ansprechpartner,
								 		vorwahl=>$this->vorwahl,
								 		homepage=>$this->homepage,
								 		telnr=>$this->telnr);
		}
		function schuleExists(){
			return $this->exists;
		}
		 
		function pruefeGueltigeWerte(){
				if($this->schulname=='' || $this->strasse=='' || $this->plz=='' || $this->stadt==''){
					return false;
				}
				return true;
		}
		
		
		function speicherDaten(){
			global $host;
			global $username;
			global $password;
			global $database;
			
			$sqlConn = @new mysqli($host,$username,$password,$database);
			if(mysqli_connect_errno()){
				throw new Exception("Ein Fehler bei der SQL-Verbindung ist aufgetreten, Versuchen sie es erneut");
			}
			if($this->pruefeGueltigeWerte()){
				if($this->exists){
				$stmt = $sqlConn->prepare("UPDATE information SET 
																										schulname = ?,
																										adresse = ?,
																										plz = ?,
																										stadt = ?,
																										email = ?,
																										schulleiter = ?,
																										ansprechpartner =?,
																										homepage = ?,
																										vorwahl = ?,
																										telefonnr = ?
																	WHERE schulid = ?");
				
				$stmt->bind_param('ssisssssssi',$this->schulname,
																				$this->strasse,
																				$this->plz,
																				$this->stadt,
																				$this->email,
																				$this->leiter,
																				$this->ansprechpartner,
																				$this->homepage,
																				$this->vorwahl,
																				$this->telnr,
																				$this->schulid);
					}
				else{
				$stmt = $sqlConn->prepare("INSERT INTO information(schulid,
 																				schulname,
 																				adresse,
 																				plz,
 																				stadt,
 																				email,
 																				schulleiter,
 																				ansprechpartner,
 																				homepage,
 																				vorwahl,
 																				telefonnr)
																		VALUES(?,?,?,?,?,?,?,?,?,?,?)");
				$stmt->bind_param('ississsssss',$this->schulid,
																				$this->schulname,
																				$this->strasse,
																				$this->plz,
																				$this->stadt,
																				$this->email,
																				$this->leiter,
																				$this->ansprechpartner,
																				$this->homepage,
																				$this->vorwahl,
																				$this->telnr);
				}
				if(!$stmt->execute()){
					throw new Exception($this->exists."<br>".$sql."<br>Da ging etwas mit der SQL-Verbindung schief!");
				}
				$stmt->close();
				$this->exists=true;
			}
			else{
				throw new Exception("<br>Bitte füllen Sie alle Pflichtfelder aus!");
			}
			$sqlConn->close();
		}
		
		function __toString(){
			$infos = $this->getInfos();
			$str= "<br>schulname\t=>\t".$this->schulname."<br>
						 email\t=>\t".$this->email."<br>
								 		strasse\t=>\t".$this->strasse."<br>
										plz\t=>\t".$this->plz."<br>
								 		stadt\t=>\t".$this->stadt."<br>
								 		leiter\t=>\t".$this->leiter."<br>
								 		ansprechpartner\t=>\t".$this->ansprechpartner."<br>
								 		vorwahl\t=>\t".$this->vorwahl."<br>
								 		homepage\t=>\t".$this->homepage."<br>
								 		telnr\t=>\t".$this->telnr."<br";
			return $str;
		}
	}